package com.qf.rabbitmq1.simple;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;

public class ProducerMain {
    public static void main(String[] args) throws IOException, TimeoutException {
        ConnectionFactory factory = new ConnectionFactory();
        //服务器所在机器的ip（如果是安装在虚拟机，写虚拟机ip）
        factory.setHost("localhost");
        //amqp协议端口
        factory.setPort(5672);
        //虚拟主机名
        factory.setVirtualHost("cdm");
        //设置虚拟主机对应用户名和密码
        factory.setUsername("cdm");
        factory.setPassword("cdm");

        //获取连接对象（Connection）
        Connection conn = factory.newConnection();
        //获取channel
        Channel channel = conn.createChannel();

        //声明一个队列
        /*
            queue – 队列名称
            durable – 队列是否支持持久化
            exclusive – 是否独占（一次只能连一个生产端），一般设置为非独占
            autoDelete – 是否字段删除，连接断开后自动删除,一般设置为非自动删除
            arguments – 额外参数。
         */
        channel.queueDeclare("cdm.simple",true,false,false,null);

        //发送消息
        /*
            exchange – 交换机名称
            routingKey – 路由键（如果是简单模式，这里给的是队列名称）
            mandatory – 手动消费时需要指定为true
            immediate – 不支持
            props – 额外参数，比如消息的超时时间、唯一标识...
            body – 消息内容
         */
        channel.basicPublish("","cdm.simple",null,"hello simple queue".getBytes(StandardCharsets.UTF_8));

        //释放资源
        channel.close();
        conn.close();
    }
}
